package com.ry.atomic;


import java.util.concurrent.atomic.AtomicInteger;

//无锁原子类
public class AtomicIntegerExp {

    public static int sum;

    public static void main(String[] args) {

        AtomicInteger atomicInteger = new AtomicInteger();

        inner inn= new AtomicIntegerExp().new inner();

        //查看结果是否为50000
        for(int j = 0; j < 10; j++){
            //Thread的  lambda表达式写法
            new Thread(()->{
                for (int i = 0; i < 5000; i++) {

                    int count = atomicInteger.incrementAndGet();
                    System.out.println(count);
                    //下面这种存在 不等于50000的情况，说明可见性、以及原子性
                    // 而上面的atomic类保证原子性(内部实现是unsafe类，内部用到了cas)，内部有一个voliate修饰的类型保证可见性
//                    sum++;
//                    System.out.println(sum);
                }
            }).start();
        }
    }

    class inner {
        public int count;

        public int getCount() {
            return count;
        }

        public void setCount(int count) {
            this.count = count;
        }
    }
}
